$(function () {
    // 行编辑事件
    $("#jqGrid").jqGrid('setGridParam', {
        // 在编辑行时不发送 AJAX 请求
        beforeSaveRow: function(options, rowid) {
            console.log("Before saving row:", rowid); // 打印正在保存的行 ID
            // 这里可以添加自定义逻辑，决定是否发送请求
            return false; // 返回 false 将阻止发送请求
        }
    });
    $("#jqGrid").jqGrid({
        url: 'sys/generator/list',
        datatype: "json",
        colModel: [			
			{ label: '表名', name: 'tableName', width: 100, key: true },
			{ label: 'Engine', name: 'engine', width: 70},
			{ label: '表备注', name: 'tableComment', width: 100 },
			{ label: '创建时间', name: 'createTime', width: 100 },
            { label: '是否子表', name: 'shiFouZiBiao', width: 80, editable: true, edittype: 'select', editoptions: { value: "N:否;Y:是" },},
            // { label: '父表字段', name: 'parentField', width: 120, editable: true, edittype: 'select', editoptions: {
            //         dataUrl: function() {
            //             var selectedRowId = $("#jqGrid").jqGrid('getGridParam', 'selrow');
            //             if (selectedRowId) {
            //                 var tableName = $("#jqGrid").jqGrid('getCell', selectedRowId, 'tableName');
            //                 return 'sys/generator/columns?tableName=' + encodeURIComponent(tableName);
            //             }
            //             return 'sys/generator/columns'; // 默认URL
            //         }, // 替换为获取选项的 URL
            //         buildSelect: function(data) {
            //             try {
            //                 var responseData = JSON.parse(data);
            //                 console.log(responseData);
            //                 var options = "<option value=''>请选择</option>";
            //                 if (responseData.res && Array.isArray(responseData.res)) {
            //                     responseData.res.forEach(function(item) {
            //                         options += "<option value='" + item.value + "'>" + item.text + "</option>";
            //                     });
            //                 } else {
            //                     console.warn("无效的响应数据", responseData);
            //                 }
            //                 return $(options); // 返回字符串
            //             } catch (e) {
            //                 console.error("解析 JSON 错误:", e);
            //                 return "<option value=''>加载失败</option>"; // 返回错误提示
            //             }
            //         }
            //     } },

            { label: '是否分表', name: 'shiFouFenBiao', width: 80, edittype: 'select', align: 'center' , editable: true , editoptions: { value: "N:否;Y:是" }},
            { label: '分表层级', name: 'fenBiaoCengJi', width: 100, editable: true, edittype: 'select', editoptions: { value: "year:年;month:月" } }
        ],
        // 其他配置
        cellEdit: true, // 启用单元格编辑
		viewrecords: true,
        height: 385,
        rowNum: 10,
		rowList : [10,30,50,100,200],
        rownumbers: true, 
        rownumWidth: 25, 
        autowidth:true,
        multiselect: true,
        pager: "#jqGridPager",
        jsonReader : {
            root: "page.list",
            page: "page.currPage",
            total: "page.totalPage",
            records: "page.totalCount"
        },
        prmNames : {
            page:"page", 
            rows:"limit", 
            order: "order"
        },
        gridComplete:function(){
        	//隐藏grid底部滚动条
        	$("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" });
            // 确保在这里进行下拉框的初始化
            $('select[name="parentField"]').select2({
                placeholder: "请选择",
                allowClear: true
            });
        }
    });
    // 添加编辑按钮
    $('#jqGrid').jqGrid('navGrid', '#jqGridPager',
        {
            edit: true,
            add: false,
            del: false
        },
        {
            url: '/sys/generator/codeMore', // 提交修改的 URL
            mtype: 'POST',
            closeAfterEdit: true, // 编辑后关闭窗口
            serializeEditData: function (postData) {
                // 获取选中行的主键数组
                var selRows = $('#jqGrid').jqGrid('getGridParam', 'selarrrow');


                // 创建要提交的数据对象
                postData.tableNames = selRows

                // 将数据转换为 JSON 字符串
                return JSON.stringify(postData);
            },
            contentType: 'application/json', // 设置请求体格式为 JSON
            // afterSubmit: function (response) {
            //     console.log("After editing row:", response)
            //     // var res = JSON.parse(response.responseText);
            //     // return [res.success, res.message]; // 返回成功与否
            // }
            beforeSubmit: function (postData, formId) {
                // 获取选中行的主键数组
                var selRows = $('#jqGrid').jqGrid('getGridParam', 'selarrrow');
                // 创建要提交的数据对象
                postData.tableNames = selRows
                // 发送 JSON 格式的请求
                fetch('/sys/generator/codeMore', {
                    method: 'POST', // 请求方法
                    headers: {
                        'Content-Type': 'application/json' // 指定请求体格式为JSON
                    },
                    body: JSON.stringify(postData) // 将数据转换为JSON字符串
                })
                    .then(response => {
                        if (response.ok) {
                            return response.blob(); // 获取响应数据为Blob
                        }
                        throw new Error('Network response was not ok.');
                    })
                    .then(blob => {
                        console.log('Response blob:', blob)
                        // 创建一个URL对象
                        const url = window.URL.createObjectURL(blob);
                        const a = document.createElement('a');
                        a.href = url;
                        a.download = 'renren.zip'; // 设置默认下载文件名
                        document.body.appendChild(a); // 通过 DOM 添加链接以触发下载
                        a.click(); // 执行下载
                        a.remove(); // 移除链接
                        window.URL.revokeObjectURL(url); // 释放对象 URL
                    })
                    .catch(error => {
                        console.error('There was an error:', error); // 处理错误
                    });

                return [false, " "]; // 返回 false，阻止jqGrid处理正常响应
            }
        });


});






var vm = new Vue({
	el:'#rrapp',
	data:{
		q:{
			tableName: null
		}
	},
	methods: {
		query: function () {
			$("#jqGrid").jqGrid('setGridParam',{ 
                postData:{'tableName': vm.q.tableName},
                page:1 
            }).trigger("reloadGrid");
		},
		generator: function() {
            var tableNames = getSelectedRows();
            if(tableNames == null){
                return ;
            }
            location.href = "sys/generator/code?tables=" + tableNames.join();
		}
	}
});

